<?php
class AlmacenesArticulo extends AppModel {
	var $name = 'AlmacenesArticulo';
	var $belongsTo = array(
		'Articulo'=>array('className' => 'Articulo','foreignKey' => 'articulo_id'),
		'Almacen'=>array('className' => 'Almacen','foreignKey' => 'almacen_id')
	);
	
	function countAlmacenesArticulo($params){return $this->find('count',$params);}
	function dataAlmacenesArticulo($params){return $this->find('all',$params);}
	
	/**Incrementa el stock del articulo dentro del almacen
	 * return boolean
	 */
	function setActualizarStock($almacen_id,$articulo_id,$cantidad,$operacion='SUMA',$tipoStock='D'){ 
	    $almacenarticulo = $this->find('first',array('conditions'=>array('almacen_id'=>$almacen_id,'articulo_id'=>$articulo_id),'recursive'=>-1));
	    if(empty($almacenarticulo))  $almacenarticulo['AlmacenesArticulo'] = array('almacen_id'=>$almacen_id,'articulo_id'=>$articulo_id,'stock_fisico'=>0,'stock_disponible'=>0); 
	   
	    switch(strtoupper($tipoStock)){
	        case 'D': //stock disponible
	                if(strtoupper($operacion) == 'SUMA'){ //aumentar el stock
            	        $almacenarticulo['AlmacenesArticulo']['stock_disponible'] += $cantidad;
            	    }else{  //disminuir el stock
            	       if($almacenarticulo['AlmacenesArticulo']['stock_disponible'] < $cantidad) return false;
            	       else $almacenarticulo['AlmacenesArticulo']['stock_disponible'] -= $cantidad;
            	    } break; 
	        case 'F': //stock fisico
            	    if(strtoupper($operacion) == 'SUMA'){ //aumentar el stock
            	        $almacenarticulo['AlmacenesArticulo']['stock_fisico'] += $cantidad;
            	    }else{  //disminuir el stock
            	       if($almacenarticulo['AlmacenesArticulo']['stock_fisico'] < $cantidad) return false;
            	       else $almacenarticulo['AlmacenesArticulo']['stock_fisico'] -= $cantidad;
            	    } break;       
	        case 'DF': //stock disponible y fisico
	                if(strtoupper($operacion) == 'SUMA'){ //aumentar el stock
            	        $almacenarticulo['AlmacenesArticulo']['stock_disponible'] += $cantidad;
            	        $almacenarticulo['AlmacenesArticulo']['stock_fisico'] += $cantidad;
            	    }else{  //disminuir el stock
            	       if(($almacenarticulo['AlmacenesArticulo']['stock_disponible'] < $cantidad) || ($almacenarticulo['AlmacenesArticulo']['stock_fisico'] < $cantidad)){
            	            return false;
            	       }else{
            	            $almacenarticulo['AlmacenesArticulo']['stock_disponible'] -= $cantidad;
            	            $almacenarticulo['AlmacenesArticulo']['stock_fisico'] -= $cantidad;  
            	       } 
            	    } break; 
	    }
	    if(empty($almacenarticulo['AlmacenesArticulo']['id']))  $this->create(); 
	    return $this->save($almacenarticulo['AlmacenesArticulo']);
	}
	
	function getAlmacenArticulo($articulo_id){
		$fields = array('Almacen.id','Almacen.descripcion','AlmacenesArticulo.stock_disponible');
	    $conditions = array('AlmacenesArticulo.articulo_id'=>$articulo_id,'AlmacenesArticulo.stock_disponible >'=>'0');
	    $almacenes = $this->find('all',array('conditions'=>$conditions, 'fields'=>$fields));
	    
	    if(empty($almacenes)){
	    	$almacen_tmp['Almacen'][0]['id'] = '';
	        $almacen_tmp['Almacen'][0]['almacen'] = 'Sin Stock';
	        $almacen_tmp['Almacen'][0]['stock'] = '';
	    }
		
	    foreach($almacenes as $key => $almacen){
	    	$almacen_tmp['Almacen'][$key]['id'] = $almacen['Almacen']['id'];
	        $almacen_tmp['Almacen'][$key]['almacen'] = $almacen['Almacen']['descripcion'];
	        $almacen_tmp['Almacen'][$key]['stock'] = $almacen['AlmacenesArticulo']['stock_disponible'];
	    }
	    return $almacen_tmp;
	}
}